package client;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;

import dtos.ArticuloDTO;
import dtos.EstadosSolicitudDTO;
import dtos.ItemSolicitudDTO;
import dtos.ModuloDTO;
import dtos.SolicitudDTO;
import entities.Articulo;
import entities.EstadoSolicitud;
import entities.EstadoSolicitudValor;
import entities.ItemSolicitud;
import entities.Modulo;
import entities.Solicitud;
import services.AdministrarDespacho;
import services.AdministrarDespachoBean;



public class Client {
	
	public static void main(String args[]) throws Exception{
        final String appName = "DespachoEAR";
        final String moduleName = "Despacho";
        final String sessionBeanName = "AdministrarDespachoBean";
        //final String sessionBeanName = AdministrarDespachoBean.class.getName();
        final String viewClassName = AdministrarDespacho.class.getName();
		 Properties jndiProps = new Properties();
		 jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
		 jndiProps.put(Context.PROVIDER_URL,"remote://127.0.0.1:4447");
		 //AdminUser: test
		 //AdminPass: test1234.
		 
		 // username
		 jndiProps.put(Context.SECURITY_PRINCIPAL, "test");
		 // password
		 jndiProps.put(Context.SECURITY_CREDENTIALS, "test1234.");
		 // This is an important property to set if you want to do EJB invocations via the remote-naming project
		 jndiProps.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
		 jndiProps.put("jboss.naming.client.ejb.context", true);
		 // create a context passing these properties
		 Context context = new InitialContext(jndiProps);
		 // lookup the bean     Foo
		 
			 //AdministrarDespacho administradorProductos =(AdministrarDespacho)context.lookup(appName+"/"+moduleName+"/"+sessionBeanName+"!"+viewClassName);
		 AdministrarDespacho administradorProductos =(AdministrarDespacho)context.lookup("DespachoEAR/Despacho/AdministrarDespachoBean!services.AdministrarDespacho");
			//  administradorProductos.CargarArticulo("2", "prueba", 1);   
			
		 /*
		 	 SolicitudDTO s = new SolicitudDTO();
			 ModuloDTO deposito = new ModuloDTO();
			 deposito.setId(1);
			 List<EstadosSolicitudDTO> lista = new ArrayList<EstadosSolicitudDTO>();
			 EstadosSolicitudDTO est = new EstadosSolicitudDTO();
			 est.setFecha(Calendar.getInstance().getTime());
			 est.setEstado("NUEVA");
			 lista.add(est);
			 ArticuloDTO articulo = new ArticuloDTO();
			 articulo.setCodigo("1");
			 articulo.setDescripcion("prueba");
			 articulo.setModulo(deposito);
			 List<ItemSolicitudDTO> items = new ArrayList<ItemSolicitudDTO>();
			 ItemSolicitudDTO i = new ItemSolicitudDTO();
			 i.setCodigoArticulo("1");
			 i.setDescripcionArticulo("prueba");
			 i.setCantidad(1);
			 items.add(i);
			 s.setDeposito(deposito);
			 s.setEstados(lista);
			 s.setId(1);
			 s.setItems(items);
			 
			 */
		 
			 List<SolicitudDTO> dtos = administradorProductos.getSolicitudes();
			 for(SolicitudDTO s : dtos){
				 System.out.println(s.getId()+" - "+s.getEstados());
			 }
			 
	}
	
	/*
	public static void main(String args[]) throws Exception{
        final String appName = "EJBEAR";
        final String moduleName = "EJB";
        final String sessionBeanName = "AdministradorProductos";
        //final String sessionBeanName = AdministradorProductos.class.getName();
        final String viewClassName = AdministradorProductosRemote.class.getName();
		 Properties jndiProps = new Properties();
		 jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
		 jndiProps.put(Context.PROVIDER_URL,"remote://127.0.0.1:4447");
		 //AdminUser: test
		 //AdminPass: test1234.
		 
		 // username
		 jndiProps.put(Context.SECURITY_PRINCIPAL, "test");
		 // password
		 jndiProps.put(Context.SECURITY_CREDENTIALS, "test1234.");
		 //jndiProps.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
		 // This is an important property to set if you want to do EJB invocations via the remote-naming project
		 jndiProps.put("jboss.naming.client.ejb.context", true);
		 // create a context passing these properties
		 Context context = new InitialContext(jndiProps);
		 // lookup the bean     Foo

			 //AdministrarDespacho administradorProductos =(AdministrarDespacho)context.lookup("ejb:"+appName+"/"+moduleName+"/"+sessionBeanName+"!"+viewClassName);
			 //AdministrarArticuloBean administradorProductos =(AdministrarArticuloBean)context.lookup("Mi primer EJB/MiPrimerEJB/AdministradorProductosBean!ejb.AdministradorProductosRemote");
			   //administradorProductos.CargarArticulo("1", "prueba", 1);
			 AdministradorProductosRemote a = (AdministradorProductosRemote)context.lookup(appName+"/"+moduleName+"/"+sessionBeanName+"!"+viewClassName);
			 Producto art = new Producto();
			 art.setDescripcion("asd");
			 art.setStock(1);
			 art.setCodigo("1");
			 //a.nuevoProducto(art);
			 System.out.print(a.obtenerStock("asd"));
	}
	*/
	
}